package com.linran.wxpublic.domain.json;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.Getter;
import lombok.Setter;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * 模板消息
 *
 * @author lin
 * @date 2020-08-26 11:39
 */
@Setter
@Getter
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class MsgTemplate {
    /**
     * 接收者openid
     */
    private String touser;
    /**
     * 模板id
     */
    private String templateId;
    /**
     * 模板跳转链接
     */
    private String url;
    /**
     * 跳小程序所需数据，不需跳小程序可不用传该数据
     */
    private MiniProgram miniprogram;
    /**
     * json数据
     */
    private Map<String, Map<String, String>> data;

    /**
     * 添加模板参数
     *
     * @param paramName  参数名称
     * @param paramValue 参数值
     * @param color      参数字段颜色
     */
    public void addParam(String paramName, String paramValue, String color) {
        if (Objects.isNull(data)) {
            data = new HashMap<>();
        }
        Map<String, String> details = new HashMap<>();
        details.put("value", paramValue);
        details.put("color", color);
        data.put(paramName, details);
    }
}

@Getter
@Setter
class MiniProgram {
    /**
     * 所需跳转到的小程序appid（该小程序appid必须与发模板消息的公众号是绑定关联关系，暂不支持小游戏）
     */
    private String appid;
    /**
     * 所需跳转到小程序的具体页面路径，支持带参数,（示例index?foo=bar），要求该小程序已发布，暂不支持小游戏
     */
    private String pagepath;
}
